home *** CD-ROM | disk | FTP | other *** search
- /*
- * SongInfo.cpp
- *
- * MIDAS Module Player for Windows NT Song Information View
- *
- * $Id: SongInfo.cpp 1.3 1997/01/14 17:42:08 pekangas Exp $
- *
- * Copyright 1996 Petteri Kangaslampi
- */
-
- #define WIN32_LEAN_AND_MEAN
- #include <windows.h>
- #include "midasdll.h"
- #include "MidpView.h"
- #include "MidpNT.h"
- #include "MidpModeless.h"
- #include "SongInfo.h"
- #include "MidpRes.h"
- #include "ViewList.h"
-
-
- static BOOL CALLBACK DialogProc(HWND hwnd, UINT message, WPARAM wparam,
- LPARAM lparam);
-
-
-
- SongInfoView::SongInfoView(void)
- {
- window = NULL;
- }
-
-
- SongInfoView::~SongInfoView(void)
- {
- if ( window != NULL )
- {
- delete window;
- window = NULL;
- }
- }
-
-
- char *SongInfoView::Name(void)
- {
- return "SongInfoView";
- }
-
-
- char *SongInfoView::Description(void)
- {
- return "Song Information";
- }
-
-
- midpViewWindow *SongInfoView::CreateViewWindow(Registry *registry)
- {
- if ( window != NULL )
- return (midpViewWindow*) window;
- window = new SongInfoWindow(0, this, registry);
- return (midpViewWindow*) window;
- }
-
-
- void SongInfoView::DestroyViewWindow(midpViewWindow *_window)
- {
- if ( _window != window )
- Panic("SongInfoView::DestroyWindow: _window != window");
-
- delete window;
- window = NULL;
- }
-
-
-
-
- SongInfoWindow::SongInfoWindow(int instanceNumber, midpView *view,
- Registry *registry) :
- midpViewWindow(instanceNumber, view, registry)
- {
- HWND parent = NULL;
-
- if ( viewsChildren )
- parent = mainWinHandle;
-
- instanceNumber = instanceNumber;
- // modeless.hwnd = hwnd = CreateDialogParam(instance, "SONGINFO", NULL,
- // (DLGPROC) DialogProc, (LPARAM) this);
-
- modeless.hwnd = hwnd = CreateDialogParam(instance, "SONGINFO",
- parent, (DLGPROC) DialogProc, (LPARAM) this);
-
- midpModelessList.AddItem(&modeless);
- viewWindowList.AddWindow(this);
- }
-
-
-
- SongInfoWindow::~SongInfoWindow(void)
- {
- viewWindowList.RemoveWindow(this);
- midpModelessList.RemoveItem(&modeless);
- DestroyWindow(hwnd);
- }
-
-
-
- static BOOL CALLBACK DialogProc(HWND hwnd, UINT message, WPARAM wparam,
- LPARAM lparam)
- {
- SongInfoWindow *window;
-
- if ( message == WM_INITDIALOG )
- SetWindowLong(hwnd, GWL_USERDATA, lparam);
-
- window = (SongInfoWindow*) GetWindowLong(hwnd, GWL_USERDATA);
-
- return window->ClassDialogProc(hwnd, message, wparam, lparam);
- }
-
-
- BOOL CALLBACK SongInfoWindow::ClassDialogProc(HWND hwnd, UINT message,
- WPARAM wparam, LPARAM lparam)
- {
- hwnd = hwnd;
- wparam = wparam;
- lparam = lparam;
-
- switch ( message )
- {
- case WM_INITDIALOG:
- this->hwnd = hwnd;
- SendDlgItemMessage(hwnd, SONGINFO_SONG, EM_LIMITTEXT, 255, 0);
- SendDlgItemMessage(hwnd, SONGINFO_COMPOSER, EM_LIMITTEXT, 255, 0);
- SendDlgItemMessage(hwnd, SONGINFO_COMMENT, EM_LIMITTEXT, 255, 0);
- UpdateInfo();
- SendDlgItemMessage(hwnd, SONGINFO_SONG, EM_SETSEL, (unsigned) -1,
- 255);
- SetWindowPos(hwnd, NULL, 0, 0, 17, 42, SWP_NOSIZE | SWP_NOREDRAW
- | SWP_NOZORDER | SWP_NOACTIVATE);
- if ( startX != CW_USEDEFAULT )
- SetWindowPos(hwnd, NULL, startX, startY, 17, 42,
- SWP_NOSIZE | SWP_NOREDRAW | SWP_NOZORDER | SWP_NOACTIVATE);
- return TRUE;
-
- case WM_CLOSE:
- ownerView->DestroyViewWindow(this);
- return TRUE;
-
- case MIDPMSG_SONGCHANGED:
- UpdateInfo();
- return TRUE;
-
- case WM_COMMAND:
- switch ( LOWORD(wparam) )
- {
- case IDCANCEL:
- ownerView->DestroyViewWindow(this);
- return TRUE;
- }
-
- }
-
- return FALSE;
- }
-
-
- void SongInfoWindow::UpdateInfo(void)
- {
- MIDASmoduleInfo moduleInfo;
-
- if ( module != NULL )
- {
- MIDASgetModuleInfo(module, &moduleInfo);
- SendDlgItemMessage(hwnd, SONGINFO_SONG, WM_SETTEXT, 0,
- (LPARAM)(LPCTSTR) moduleInfo.songName);
- }
- else
- {
- SendDlgItemMessage(hwnd, SONGINFO_SONG, WM_SETTEXT, 0,
- (LPARAM)(LPCTSTR) "[none]");
- }
- }
-
-
- /*
- * $Log: SongInfo.cpp $
- * Revision 1.3 1997/01/14 17:42:08 pekangas
- * Changed to use MIDAS DLL API
- *
- * Revision 1.2 1996/07/16 19:22:16 pekangas
- * Removed Visual C warnings, added RCS keywords, converted to LFs
- *
- */